package ar.edu.uade.centroDistribucion.controladores;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

import ar.edu.uade.centroDistribucion.Modelo.BusinessDelegate;
import ar.edu.uade.centroDistribucion.framework.BaseControlador;
import ar.edu.uade.centroDistribucion.framework.BaseVista;
import ar.edu.uade.centroDistribucion.herramientas.FileReader;
import ar.edu.uade.centroDistribucion.valueObjects.CentrosDistribucionVO;
import ar.edu.uade.centroDistribucion.valueObjects.NuevoArticuloVO;
import ar.edu.uade.centroDistribucion.valueObjects.VistaNuevoArticuloVO;
import ar.edu.uade.centroDistribucion.vista.VistaNuevoArticulo;

public class ControladorNuevoArticulo extends BaseControlador{
	
	public ControladorNuevoArticulo(BusinessDelegate businessDelegate,
			BaseVista vista) {
		super(businessDelegate, vista);
		// TODO Auto-generated constructor stub
	}

	public void ProcesarNuevoArt(String urlXML){
		
		NuevoArticuloVO nuevoArticuloVO;
		
		nuevoArticuloVO = GenerarVO(urlXML);
		EnviarVO(nuevoArticuloVO);
		
	}
	
	private NuevoArticuloVO GenerarVO(String urlXML){
		
		try {
			FileReader fileReader = new FileReader(urlXML);
			String strXML = fileReader.obtenerContenido();
			XStream xStream = new XStream(new DomDriver());
			 
			xStream.alias("NuevoArt",NuevoArticuloVO.class);
			xStream.alias("CentroDistribucion",CentrosDistribucionVO.class);
			
			//Obtengo el Value Object desde el XML
			return (NuevoArticuloVO)xStream.fromXML(strXML);
			
			}catch (Exception e) {

				System.out.println(e.getMessage() + e.toString());	
				return null;
				}
	}
	
	private void EnviarVO(NuevoArticuloVO nuevoArticuloVO){
		
		VistaNuevoArticuloVO vistaVO =  this.businessDelegate.ProcesarArticuloNuevo(nuevoArticuloVO);
		((VistaNuevoArticulo)this.getVista()).actualizar(vistaVO);
	}

}
